g_hash_table_remove (seat->touches, GUINT_TO_POINTER (id));
}
+void
+gdk_wayland_seat_clear_touchpoints (GdkWaylandSeat *seat,
+ GdkSurface *surface)
+{
+ GHashTableIter iter;
+ GdkWaylandTouchData *touch;
+
+ g_hash_table_iter_init (&iter, seat->touches);
+
+ while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch))
+ {
+ if (touch->surface == surface)
+ g_hash_table_iter_remove (&iter);
+ }
+}
+
static void
mimic_pointer_emulating_touch_info (GdkDevice *device,
GdkWaylandTouchData *touch)
void gdk_wayland_seat_update_cursor_scale (GdkWaylandSeat *seat);
+void gdk_wayland_seat_clear_touchpoints (GdkWaylandSeat *seat,
+ GdkSurface *surface);
+
#endif /* __GDK_WAYLAND_SEAT_H__ */
static void
gdk_wayland_surface_hide (GdkSurface *surface)
{
+ GdkSeat *seat;
+
+ seat = gdk_display_get_default_seat (surface->display);
+
+ if (surface->autohide)
+ gdk_seat_ungrab (seat);
+
+ gdk_wayland_seat_clear_touchpoints (GDK_WAYLAND_SEAT (seat), surface);
gdk_wayland_surface_hide_surface (surface);
_gdk_surface_clear_update_area (surface);
}